The present invention is related generally to the field of computer graphics, and more particularly, to calculating color values during a scaling operation in a computer graphics processing system.
In the area of computer graphics, scaling graphics images is an important function that is used in a variety of applications. When enlarging images, various methods and systems have been used to calculate color values for the destination pixels of the scaled image in order for the scaled image to retain acceptable detail. A conventional method for generating destination pixel colors for the scaled image from source pixel colors of the original image is to use bilinear interpolation. As is well known in the art, bilinear interpolation applies a linear function in calculating a weighting value for each color of four adjacent source pixels Ps0-Ps3 based on the xe2x80x9clocationxe2x80x9d of the destination pixel Pd relative to the four source pixels. The location of the destination pixel is usually provided as fractional coordinates rU and rV, which indicate the relative position of the destination pixel Pd with respect to the source pixel Ps0. The resulting destination pixel color is the sum of the color values of the four source pixels, weighted by the appropriate weighting value. Bilinear interpolation is frequently used because circuits that implement such a function are relatively inexpensive and well understood. Another conventional system uses a bicubic interpolation function. Although such a scaling system is more costly, the resulting color values calculated for the destination pixels produce a more realistic scaled image.
Although the conventional interpolation methods applied during scaling operations provide scaled images having reasonably acceptable resolution, there are several disadvantages to conventional scaling systems. For example, although circuits that implement a bilinear interpolation function for scaling operations are well known in the art, and are relatively inexpensive, the resulting scaled image may appear blurry or fuzzy because of the color averaging resulting from the bilinear interpolation function. The color averaging is in part due to the fact that a bilinear interpolation function is not ideally suited for scaling operations. The bilinear interpolation function begins weighting the color values immediately starting from one edge of a source pixel to the opposite edge, regardless of the scaling factor. As a result, the color values for the destination pixels appear averaged.
With respect to systems implementing bicubic interpolation, such systems are typically complicated and costly. Moreover, although a scaled image produced using a bicubic interpolation function has a better appearance than an image scaled using a bilinear interpolation function, bicubic interpolation may cause xe2x80x9cringingxe2x80x9d artifacts in the scaled image, especially near sharp edges in the source content, such as with dark colored text against a light colored background.
Therefore, there is a need for a system and method for calculating the color values of destination pixels in a scaled graphics image which applies an interpolation function that accounts for the amount by which the image is scaled.
The present invention is directed to a method and system for calculating an interpolated color value for a destination pixel from color values of source pixels adjacent to the destination pixel, where calculation of the color value of the destination pixel uses one of a plurality of interpolation functions selected according to the location of the destination pixel relative to one of the adjacent source pixels. In one aspect of the invention, selection of the particular interpolation may be accomplished by defining a corresponding plurality of regions within the area covered by the adjacent source pixels and assigning an interpolation function to each of the regions. The region in which the destination pixel is located is identified, and the interpolation function assigned to the identified region is applied in the destination pixel color value calculation. In another aspect of the invention, the resultant values of the identified interpolation function are provided to a conventional bilinear interpolation circuit, and the color value of the destination pixel is calculated therefrom.